package com.lovi.thread_;
/*
1)请编写程序,开启一个线程,该线程每隔1秒。在控制台输出“喵喵,我是小猫咪"
2)对上题改进：当输出80次喵喵,我是小猫咪,结束该线程
3)使用JConsole监控线程执行情况,并画出程序示意图!
 */
@SuppressWarnings("all")
public class Test01 extends Thread{
    public static void main(String[] args) throws InterruptedException {
        Cat cat = new Cat();
        /*
        解读为什么开启线程是通过start而不是run。（run是普通方法，不会开线程,不会并发交替执行)
            (1)
            public synchronized void start() {
                start0();
            }
            (2)
            //start0() 是本地方法，是JVM调用, 底层是c/c++实现
            //真正实现多线程的效果， 是start0(), 而不是 run
            private native void start0();

         */
        cat.start();//开启线程
        //主线程不会堵塞
        for (int i = 0; i < 60; i++) {
            Thread.sleep(10);
            System.out.println("主线程："+i+"线程名："+Thread.currentThread().getName());
        }

    }
}
class Cat extends Thread{
    @Override
    public void run() {
        int count = 1;
        while (count<=80){
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("喵喵,我是小猫咪"+count);
            System.out.println("子线程："+count+"线程名："+Thread.currentThread().getName());
            count++;
        }
    }
}
